import re
from flask import request, jsonify, current_app, g
from info import db
from info.modules.verify import verify_blu
from info.response_code import RET
from info.utils.common import user_login


@verify_blu.route("/user/auth", methods=["GET","POST"])
@user_login
def real_name():
    """
    1.接受参数 真实姓名real_name   身份证号 id_card
    2.校验参数
    3.修改数据库表的User信息
    4.返回数据
    """
    # 获取用户, 判断用户是否登录
    user = g.user

    if not user:
        return jsonify(errno=RET.SESSIONERR, errmsg='用户未登录')

    # 如果是GET 请求
    if request.method == 'GET':
        data = {
            'real_name': user.real_name,
            'id_card': user.id_card
        }

        return jsonify(errno=RET.OK, errmsg='登录成功', data=data)

    # 如果是 POST 请求
    # 获取参数
    real_name = request.json.get('real_name')
    id_card = request.json.get('id_card')

    # 校验参数
    if not all([real_name, id_card]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不全')

    # 校验身份证号
    if not re.match(r"^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$",
                    id_card):
        return jsonify(errno=RET.PARAMERR, errmsg='身份证号不正确')

    # 修改数据库
    user.real_name = real_name
    user.id_card = id_card

    try:
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='添加数据失败')

    return jsonify(errno=RET.OK, errmsg='OK')


